<?php

namespace app\admin\job;

use think\Log;
use think\queue\Job;

class SendPaymentNoticeJob
{

    public function fire(Job $job, $data)
    {

        // 有些消息在到达消费者时,可能已经不再需要执行了
        $isJobStillNeedToBeDone = $this->checkDatabaseToSeeIfJobNeedToBeDone($data);
        if (!$isJobStillNeedToBeDone) {
            Log::alert('SendPaymentNoticeJob: 任务已处理，拒绝重复消费');
            $job->delete();
            return;
        }

        $isJobDone = $this->doHelloJob($data);

        if ($isJobDone) {
            // 如果任务执行成功， 记得删除任务
            Log::info('SendPaymentNoticeJob: 任务执行成功');
            $job->delete();
        } else {
            if ($job->attempts() > 3) {
                //通过这个方法可以检查这个任务已经重试了几次了
                Log::alert('SendPaymentNoticeJob: 任务达到最大尝试次数3,删除任务');
                $job->delete();
            } else {
                Log::alert('SendPaymentNoticeJob: 任务第' . $job->attempts() . '次重试,2s后重试');
                // 也可以重新发布这个任务
                $job->release(2); //$delay为延迟时间，表示该任务延迟2秒后再执行
            }
        }
    }

    /**
     * 有些消息在到达消费者时,可能已经不再需要执行了
     * @param array|mixed $data 发布任务时自定义的数据
     * @return boolean                 任务执行的结果
     */
    private function checkDatabaseToSeeIfJobNeedToBeDone($data)
    {
        // 判断数据库中的任务是否完成，如果已经完成则返回false，否则返回true
        if($data['status']==1){
            //1是上传图片 24小时之后变状态   2：是结束用章触发的判断24小时之后有没有上传图片去锁定用户
            // $res=db('app_form')->where(['id'=>$data['form_id'],'status'=>5])->update(['status'=>6]);
            $id=(db('app_form')->where(['id'=>$data['form_id'],'status'=>5])->value('id'));
            if(!$id){
                return false;
            }else{
                return true;
            }
        }elseif($data['status']==2){

            $used_img=db('app_form')->where(['id'=>$data['form_id']])->value('used_img');
            if(!$used_img){

                //没有上传图片
                $status=db('staff')->where(['uid'=>$data['uid'],'company_id'=>$data['company_id']])->value('status');
                if($status==2){
                    return false;
                }else{
                    return true;
                }
            }
            return false;
        }
    }

    /**
     * 根据消息中的数据进行实际的业务处理...
     */
    private function doHelloJob($data)
    {
        //$res=db('app_form')->where(['id'=>$data['form_id']])->update(['status'=>6]);
		
		if($data['status']==1){
            //1是上传图片 24小时之后变状态   2：是结束用章触发的判断24小时之后有没有上传图片去锁定用户
            $res=db('app_form')->where(['id'=>$data['form_id'],'status'=>5])->update(['status'=>6]);
        }elseif($data['status']==2){
			file_put_contents('1225.txt', $data);
            $used_img=db('app_form')->where(['id'=>$data['form_id']])->value('used_img');
            if(!$used_img){
				file_put_contents('1226.txt', $data);
                //没有上传图片
                $res=db('staff')->where(['uid'=>$data['uid'],'company_id'=>$data['company_id']])->update(['status'=>2]);
				
                $seal_id=db('app_form')->where(['id'=>$data['form_id']])->value('seal_id');
                $add_data['uid']=$data['uid'];
                $add_data['app_id']=$data['form_id'];
                $add_data['company_id']=$data['company_id'];
				$add_data['lng']=db('app_form')->where(['id'=>$data['form_id']])->value('lng');
                $add_data['lat']=db('app_form')->where(['id'=>$data['form_id']])->value('lat');
				$add_data['seal_id']=$seal_id;
                $add_data['reason']=2;
                $add_data['create_time']=time();
                db('alarm_record')->insert($add_data);
				
            }
        }
		
		
        if($res){
            return true;
        }else{
            return false;
        }
        //如果处理成功，则返回true，否则返回false
        
    }
}